﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using EncuentraloSilverlight.Web.Models;
using System.Data.Linq;

namespace EncuentraloSilverlight.Models
{
    public class SearchRepository
    {
        private EncuentraloDataBaseModelDataContext db;
       
        // Query Methods

        public SearchRepository()
        {
            db = new EncuentraloDataBaseModelDataContext();
            DataLoadOptions options = new DataLoadOptions();
            options.LoadWith<Search>(k => k.User);
            db.LoadOptions = options;
        }

        public IQueryable<Search> FindAllSearches()
        {
            return db.Searches;
        }
       
        //Busca una búsqueda según el parámetro de búsqueda
        public IQueryable<Search> FindSearchByParameter(string name)
        {
            return from search in db.Searches
                   where search.Parameter.Equals(name)
                   select search;
        }

        //Busca una búsqueda según fecha
        public IQueryable<Search> FindSearchByDate(string date)
        {
            return from search in db.Searches
                   where search.Date.ToString().Equals(date)
                   select search;
        }

        //Retorna búsqueda según el tipo de búsqueda (0 si es normal, 1 si es express)
        public IQueryable<Search> FindSearchByType(int n) 
        {
            return from search in db.Searches
                   where search.SearchType.Equals(n)
                   select search;
        }

        //Devuelve búsqueda según ID
        public Search GetSearch(int id)
        {
            return db.Searches.SingleOrDefault(d=>d.SearchID==id);
        }

        //
        // Insert/Delete Methods
        public void Add(Search search)
        {
            db.Searches.InsertOnSubmit(search);
            Save();
        }

        public void Delete(Search search)
        {
            db.Searches.DeleteOnSubmit(search);
            Save();

        }
        //
        // Persistence
        private void Save()
        {
            db.SubmitChanges();
        }

    }
}